home *** CD-ROM | disk | FTP | other *** search
- #!/bin/vtcl
- # ---------------------------------------------------------------------
- # Copyright 1994 by SCO, Inc.
- # Permission to use, copy, modify, distribute, and sell this software
- # and its documentation for any purpose is hereby granted without fee,
- # provided that the above copyright notice appear in all copies and that
- # both that copyright notice and this permission notice appear in
- # supporting documentation, and that the name of SCO not be used in
- # advertising or publicity pertaining to distribution of the software
- # without specific, written prior permission. SCO makes no
- # representations about the suitability of this software for any
- # purpose. It is provided "as is" without express or implied warranty.
- # ---------------------------------------------------------------------
-
- # Demo : scale.tcl
- # Description : Manipulate the scale widget's resources via text widgets
- # and togglebutton. Employs Tcl "switch" command.
- # VtSetValues, VtGetValues
- # Notes: :
- #
-
- proc QuitCB {cbs} {
- VtClose; exit 0
- }
-
- # Grab values from the scale and update the text widgets.
- #
- proc UpdateTextValues {form} {
- global horizontalScaleW verticalScaleW
-
- set value [VtGetValues $horizontalScaleW -value]
- set min [VtGetValues $horizontalScaleW -min]
- set max [VtGetValues $horizontalScaleW -max]
-
- VtSetValues $form.minTextW -value $min
- VtSetValues $form.maxTextW -value $max
- VtSetValues $form.valueTextW -value $value
- }
-
-
- # Depending on the option passed, update the specified scale
- # widget resource (title, mininum value, maximum value, etc...)
- #
- proc SetSelectedScaleResourceCB {option cbs} {
- global horizontalScaleW verticalScaleW
-
- switch $option {
- "value" {
- set widgetValue [keylget cbs value]
- VtSetValues $horizontalScaleW -value $widgetValue
- VtSetValues $verticalScaleW -value $widgetValue
- }
- "min" {
- set widgetValue [keylget cbs value]
- VtSetValues $horizontalScaleW -min $widgetValue
- VtSetValues $verticalScaleW -min $widgetValue
- }
- "max" {
- set widgetValue [keylget cbs value]
- VtSetValues $horizontalScaleW -max $widgetValue
- VtSetValues $verticalScaleW -max $widgetValue
- }
- "title" {
- set widgetValue [keylget cbs value]
- VtSetValues $horizontalScaleW -title $widgetValue
- VtSetValues $verticalScaleW -title $widgetValue
- }
- "showValue" {
- #
- #toggle button uses "set" not "value"
- #
- set widgetValue [keylget cbs set]
- VtSetValues $horizontalScaleW -showValue $widgetValue
- VtSetValues $verticalScaleW -showValue $widgetValue
- }
- }
- }
-
- proc UpdateScaleValueCB {cbs} {
- # call this function to make sure the other scale
- # is reflecting the same value.
- SetSelectedScaleResourceCB "value" $cbs
- set form [keylget cbs dialog]
- UpdateTextValues $form
- }
-
- #
- # Start Program
- #
- set app [VtOpen scales]
-
- set mainForm [VtFormDialog $app.form \
- -title "Scales" \
- -okCallback QuitCB \
- ]
-
- set scaleFrame [VtFrame $mainForm.scaleFrame \
- -title "Scales" \
- -shadowType ETCHED_OUT \
- ]
- set smallForm [VtForm $scaleFrame.smallForm \
- ]
-
- set horizontalScaleW [VtScale $smallForm.scale_horz \
- -callback UpdateScaleValueCB \
- -horizontal \
- -min 10 \
- -max 100 \
- -value 50 \
- -topSide FORM \
- -leftSide FORM \
- ]
-
- set verticalScaleW [VtScale $smallForm.scale_vert \
- -callback UpdateScaleValueCB \
- -vertical \
- -min 10 \
- -max 100 \
- -value 50 \
- -leftSide FORM \
- -topOffset 20 \
- -topSide $horizontalScaleW \
- ]
-
- set titleLabelW [VtLabel $mainForm.titleLabelW \
- -label "Enter Title:" \
- -topSide FORM \
- -leftSide $scaleFrame \
- -leftOffset 10 \
- -topOffset 10 \
- ]
-
- set titleTextW [VtText $mainForm.titleTextW \
- -callback "SetSelectedScaleResourceCB title" \
- -columns 15 \
- -topSide FORM \
- -leftSide $titleLabelW \
- -rightSide FORM \
- -topOffset 10 \
- ]
-
- set valueLabelW [VtLabel $mainForm.valueLabelW \
- -label "Value:" \
- -rightSide $titleTextW\
- -leftSide $scaleFrame \
- -topSide $mainForm.titleTextW \
- -labelRight \
- ]
-
- set valueTextW [VtText $mainForm.valueTextW \
- -callback "SetSelectedScaleResourceCB value" \
- -columns 3 \
- -leftSide $valueLabelW \
- -topSide $titleTextW]
-
- set minLabelW [VtLabel $mainForm.minLabelW \
- -label "Min:" \
- -leftSide $scaleFrame \
- -rightSide $valueTextW \
- -topSide $valueTextW \
- -labelRight \
- ]
-
- set minTextW [VtText $mainForm.minTextW \
- -callback "SetSelectedScaleResourceCB min" \
- -columns 3 \
- -leftSide $minLabelW \
- -topSide $valueTextW \
- ]
-
- set maxLabelW [VtLabel $mainForm.maxLabelW \
- -label "Max:" \
- -leftSide $scaleFrame \
- -rightSide $minTextW \
- -topSide $minTextW \
- -labelRight \
- ]
-
- set maxTextW [VtText $mainForm.maxTextW \
- -callback "SetSelectedScaleResourceCB max" \
- -columns 3 \
- -leftSide $maxLabelW \
- -topSide $minTextW \
- ]
-
-
- set showValue [VtToggleButton $mainForm.showValue \
- -label "Show Scale Value" \
- -value 1 \
- -callback "SetSelectedScaleResourceCB showValue" \
- -topSide $maxTextW \
- -leftSide $maxLabelW \
- ]
-
- UpdateTextValues $mainForm
-
- VtShow $mainForm
- VtMainLoop
-
-